In servo systems, generally, the difference (actual position deviation) between a command amount of movement and an actual amount of movement is periodically detected, and the drive of a servomotor is controlled in accordance with a torque command determined based on the difference (speed deviation) between a command speed, corresponding to the position deviation, and an actual speed. When the actual position deviation becomes larger than an allowable value, it is determined that the servomotor has been unable to follow the command for some reasons and hence an excessive error has occurred, and therefore, an alarm is generated to inform the occurrence of an abnormal condition.
Conventionally, the allowable position deviation for discriminating an excessive error is set to a large value, i.e., about 1.3 times the position deviation that can normally occur when the servomotor is rotated at a maximum speed. Therefore, when the motor is driven at a low speed, or when a currently stopped operating part (axis) of a direct drive robot is rotated at a low speed due to an interference torque generated by the movement of another operating part, a considerably long time elapses from the occurrence of an abnormal condition, e.g., a collision of a robot arm with an obstacle during a low-speed operation, until the position deviation reaches the allowable position deviation and thus the occurrence of abnormality is detected. As a result, a machine provided with the servomotor, such as a robot, may be damaged, or a workpiece may be excessively cut.